1 import turtle
2 import time
3 import random
4
5
6 delay =
0.1
7 queue =[]
8
9 pen = turtle.Turtle()
10 pen.shape(
'square')
11 pen.penup()
12 pen.speed(
0)
13 pen.color(
'White')
14
15 pen.hideturtle()
16 pen.
goto(-290,210)
17 pen.write(
"Score: 0 " ,font=('Arial',25,'bold'))
18
19
20 window = turtle.Screen()
21 window.bgcolor(
'Black')
22 window.title(
'Snake Game')
23 window.setup(width=
600,height=500)
24 window.tracer(
0)
25
26
27 Snake_Head = turtle.Turtle()
28 Snake_Head.speed(
0)
29 Snake_Head.shape(
'circle')
30 Snake_Head.color(
'white')
31 Snake_Head.penup()
32 Snake_Head.
goto(0,0)
33 Snake_Head.direction =
'stop'
34
35
36 Snake_Food = turtle.Turtle()
37 Snake_Food.speed(
0)
38 Snake_Food.shape(
'circle')
39
40 Snake_Food.color(
'red')
41 Snake_Food.penup()
42 Snake_Food.
goto(0,150)
43
44
45
46 def Move_Snake():
47     
if Snake_Head.direction == 'up':
48         y = Snake_Head.ycor()
49         Snake_Head.sety(y +
10)
50     
if Snake_Head.direction == 'down':
51         y = Snake_Head.ycor()
52         Snake_Head.sety(y -
10)
53     
if Snake_Head.direction == 'left':
54         x = Snake_Head.xcor()
55         Snake_Head.setx(x -
10)
56     
if Snake_Head.direction == 'right':
57         x = Snake_Head.xcor()
58         Snake_Head.setx(x +
10)
59
60
61 def go_up():
62     Snake_Head.direction =
'up'
63
64
65 def go_down():
66     Snake_Head.direction =
'down'
67
68
69 def go_left():
70     Snake_Head.direction =
'left'
71
72
73 def go_right():
74     Snake_Head.direction =
'right'
75
76
77 def Food_Collision():
78     
if Snake_Head.distance(
79             Snake_Food) <
15:
80         Snake_Food.
goto(random.randint(-290, 290), random.randint(-249, 249))
81         Snake_body = turtle.Turtle()
82         Snake_body.speed(
0)
83         Snake_body.shape(
'circle')
84         Snake_body.color(
'white')
85         Snake_body.penup()
86         queue.append(Snake_body)
87         
return True
88     
return False
89
90
91 def Border_Collision():
92     
if Snake_Head.xcor() > 290 or Snake_Head.xcor() < -290 or Snake_Head.ycor() > 249 or Snake_Head.ycor() < -249:
93         time.sleep(
1)
94         Snake_Head.
goto(0, 0)
95         Snake_Head.direction =
'stop'
96         
for segment in queue:
97             segment.
goto(1000, 1000)
98         queue.clear()
99         
return True
100
101     
return False
102 def Body_Collision():
103     
for segment in queue:
104         
if segment.distance(Snake_Head) < 10:
105             time.sleep(
1)
106             Snake_Head.
goto(0, 0)
107             Snake_Head.direction =
'stop'
108             
for segment in queue:
109                 segment.
goto(1000, 1000)
110             queue.clear()
111             
return True
112     
return False
113
114
115 def Add_Snake_Body():
116     
for i in range(len(queue) - 1, 0, -1):
117         
if i % 5 == 0:
118             queue[i].
goto(queue[i - 1].xcor(), queue[i - 1].ycor())
119             queue[i].color(
'red')
120             
continue
121         queue[i].
goto(queue[i - 1].xcor(), queue[i - 1].ycor())
122     
if len(queue) > 0:
123         queue[
0].goto(Snake_Head.xcor(), Snake_Head.ycor())
124
125
126
127 window.listen()
128 window.onkeypress(go_up,
'Up')
129 window.onkeypress(go_down,
'Down')
130 window.onkeypress(go_left,
'Left')
131 window.onkeypress(go_right,
'Right')
132
133
134 score =
0
135 while
True:
136
137     window.update()
138     Move_Snake()
139     
if Food_Collision():
140         score +=
10
141         pen.clear()
142         pen.write(
'Score:{}'.format(score), font=('Arial', 25, 'bold'))
143
144     
if Body_Collision() or Border_Collision():
145         score =
0
146         pen.clear()
147         pen.write(
'Score:{}'.format(score), font=('Arial', 25, 'bold'))
148     time.sleep(delay)
149     Add_Snake_Body()
150
151 window.mainloop()


Gõ tìm kiếm nhanh...